package com.itcoon.cloud.framework.transform.assemble.assembler.inter;


import com.itcoon.cloud.framework.transform.definition.InjectDefinition;
import com.itcoon.cloud.framework.transform.pool.AssembleBeanHolder;

import java.lang.reflect.Method;
import java.util.List;

public interface MethodAssembler {

    AssembleBeanHolder BEAN_HOLDER = AssembleBeanHolder.getInstance();

    boolean support(Class<?> targetClass, Object source, Method method, String[] ignoreProperties);

    <T, R> Object assemble(T source, Class<R> targetClass, Object proxy, Method method, String[] ignoreProperties, List<InjectDefinition> injectInfos, Object[] args) throws Exception;
}
